package tool

import (
	"context"
	"github.com/go-redis/redis/v8"
	"github.com/mojocn/base64Captcha"
	"log"
	"time"
)

var ctx = context.Background()

type RedisHome struct {
	client *redis.Client
}

var RedisClient *RedisHome

func InitRedisHome() *RedisHome {
	config := Getconfig().RedisConfig //这里我们要清楚我们之前将获取
	// 配置文件我们定义成了一个方法，通过这个方法我们能较为容易的获取配置文件
	client := redis.NewClient(&redis.Options{
		Addr:     config.Addr + ":" + config.Port,
		Password: config.Password,
		DB:       config.Db,
	})
	RedisClient = &RedisHome{client: client}
	base64Captcha.SetCustomStore(RedisClient) //这个验证码模块已经使用了redis数据库
	//redis数据库在这里实现了和验证码的连接

	return RedisClient

}

func (tmp *RedisHome) Set(id string, value string) {

	err := tmp.client.Set(ctx, id, value, time.Minute*10).Err()
	if err != nil {
		log.Println(err.Error())
	}

}

func (tmp *RedisHome) Get(id string, clear bool) string {

	val, err := tmp.client.Get(ctx, id).Result()
	if err != nil {
		log.Println(err.Error())
		return ""
	}
	if clear {
		err := tmp.client.Del(ctx, id).Err()
		if err != nil {
			log.Println(err)
			return ""
		}
	}
	return val

}
func (tmp *RedisHome) Dele(id string) {
	err := tmp.client.Del(ctx, id).Err()
	if err != nil {
		log.Println(err)
		return
	}

}
